package com.ctrip.corp.obt.shard.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 模糊查询注解（加在字段上，标识该字段为需要进行模糊查询的加密字段）
 * 
 * @author xukang zhang
 * @date 2023/12/21 13:07
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SecurityFuzzyQueryField {

    /**
     * 分词所在表
     * 默认为空：代表与当前字段在一张表
     * 
     * @return
     */
    String divideTable() default "";

    /**
     * 分词所在列
     * 默认为空：代表取默认列名 ${columnName}_secret_divide_${divideNumber}
     * 
     * @return
     */
    String divideColumn() default "";

    /**
     * 分词长度（以几位分隔进行加密）
     *
     * @return
     */
    int divideLength();

    /**
     * 加密算法
     * 
     * @return
     */
    String encryptAlgorithm() default "sm4";
}
